# encoding: utf-8
# @author: w4dll
# @file: usermanage_pane.py
# @time: 2020/5/6 22:01

from PyQt5.Qt import*
from resource.usermanagement import Ui_Form
from mytool import readjson, writejson, sqlite3Class
from adduser_pane import AddUser

class userManegePane(QWidget, Ui_Form):

    user_changed_singal = pyqtSignal()

    def __init__(self, userinfo):
        super().__init__()
        self.setupUi(self)
        self.userinfo = userinfo
        self.db = sqlite3Class("data.db")

        self.label_2.setText("当前用户："+str(self.userinfo[0][1]))      # 设置当前用户显示

        self.model = QStandardItemModel()
        self.model.setHorizontalHeaderLabels(["用户名", "姓名", "性别", "一级单位", "二级单位", "三级单位", "注册时间", "用户权限"])

        self.initUi()

    # todo 初始化界面
    def initUi(self):

        # 用户只能修改比自己权限低的人的权限
        data = self.db.selectdata("select * from t_userinfo where 用户权限<{}".format(self.userinfo[0][8]))
        for x in data:
            li = []
            y = (x[1],) + x[3:8] + (x[9],) + (x[8],)
            for m in y:
                q1 = QStandardItem(str(m))
                q1.setTextAlignment(Qt.AlignCenter)  # 设置单元格居中显示
                li.append(q1)
            self.model.appendRow(li)
        self.tableView.setModel(self.model)
        self.tableView.horizontalHeader().setStretchLastSection(True)
        self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)  # 设置表格的选取方式是行选取

    # todo 提升权限
    def updatepriority(self):
        indexs = self.tableView.selectionModel().selection().indexes()  # 选中单元按序索引
        d = indexs[7].data()
        if int(d) < int(self.userinfo[0][8]):
            self.model.setData(indexs[7], str(int(d) + 1))
            self.db.excuteSql("update t_userinfo set 用户权限={} where 用户名='{}'".format(int(d) + 1, indexs[0].data()))
            QMessageBox.about(self, "提示", "操作成功！")
        else:
            QMessageBox.about(self, "提示", "你没有操作权限！")
        self.tableView.setCurrentIndex(QModelIndex())
        self.pushButton.setEnabled(False)
        self.pushButton_2.setEnabled(False)

    # todo 删除用户,这里每次只能删除一行，如何删除多行？？？
    def deleteuser(self):
        indexs = self.tableView.selectionModel().selection().indexes()  # 将所有单元格按顺序存储
        if QMessageBox.Yes == QMessageBox.question(self, "提示", "确实删除用户吗？删除后不可恢复!"):
            if int(indexs[7].data()) == int(self.userinfo[0][8]):
                QMessageBox.about(self, "提示", "你没有操作权限！")
                return
            self.model.removeRow(self.tableView.currentIndex().row())
            self.db.excuteSql("delete from t_userinfo where 用户名='"+str(indexs[0].data())+"'")
            # QMessageBox.about(self, "提示", "删除成功！")
            self.user_changed_singal.emit()
        self.tableView.setCurrentIndex(QModelIndex())  # 设置当前索引行为空
        self.pushButton.setEnabled(False)
        self.pushButton_2.setEnabled(False)

        # self.model.removeRows(indexs[0].row(), 1)  # 从指定行索引开始删除指定行数，此处1行

    # 添加用户
    def adduser(self):
        self.win = AddUser()
        self.win.register_singal.connect(self.addusertotable)
        self.win.setWindowModality(Qt.ApplicationModal)
        self.win.show()

    def addusertotable(self, list_user):
        # list_user=['name', 'p', '丁莉莉', '男', '1', '22', '333', '202005161734']
        name = self.db.selectdata("select * from t_userinfo where 用户名='{}'".format(list_user[0]))
        if len(name) > 0:
            QMessageBox.about(self, "提示", "用户已存在！")
        else:
            val = list_user[:-1] + [1, list_user[-1]]
            self.db.insert_singlerow_data("insert into t_userinfo(用户名,密码,姓名,性别,一级单位,二级单位,三级单位,用户权限,注册时间) values(?,?,?,?,?,?,?,?,?)", val)
            QMessageBox.about(self, "提示", "添加成功！")
            li = []
            for m in [list_user[0], list_user[2], list_user[3], list_user[4], list_user[5], list_user[6], list_user[7], 1]:
                q1 = QStandardItem(str(m))
                q1.setTextAlignment(Qt.AlignCenter)  # 设置单元格居中显示
                li.append(q1)
            self.model.appendRow(li)

    # todo 选中行
    def row_selected(self):
        self.pushButton.setEnabled(True)
        self.pushButton_2.setEnabled(True)

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    db = sqlite3Class("data.db")
    data = db.selectdata("select * from t_userinfo where 用户名='dll'")
    win = userManegePane(data)
    win.show()
    sys.exit(app.exec_())